/*
验证服务器有效性的模块
 */
// 引入sha1
const sha1=require('sha1')
// 引入config模块
const config=require('../config')

module.exports= () =>{
    return (req,res,next)=>{
        // 微信服务器提交的参数
        console.log(req.query)
        /*
        { signature: '0631c510ef82306f0302927484aa575ea9b34d62', 微信的加密签名
      echostr: '1094439402354023869',微信的随机字符串
      timestamp: '1568704665', 微信的发送请求时间戳
      nonce: '1641573458' }   微信的随机数字
         */
        const {signature,echostr,timestamp,nonce}=req.query;
        const {token}=config;
        // 1、将参与微信签名的三个参数（timestap nonce  token） 按照字典序排序并组合在一起形成一个数组token是网页上设置的
        const arr=[timestamp,nonce,token];
        const arrSort=arr.sort();
        console.log(arrSort);
        // 2、将数组里面所有参数拼成一个字符串，进行sha1加密
        const str=arrSort.join('');
        const sha1Str=sha1(str);
        console.log(sha1Str);
        // 3、加密完成就生成了一个signnature。和微信发送过来的进行对比。
        if(sha1Str==signature){
            //如果一致 返回给微信echostr
            res.send(echostr)
        }else{
            //如果不一样
            console.log('不一样')
            res.end()
        }
    }
}